// 主入口文件
let express = require("express");
// 创建express服务器
let app = express();
let expressJWT = require('express-jwt')
// 设置端口
app.listen(250, function () {
    console.log('server is running at port 250');
});


// 数据库配置和分类
// 1.把db.js 进行配置
// 2.复制routers/category.js
// 3.在主文件,需要导入细分路由,并配置公共路径


// 处理post请求参数
app.use(express.urlencoded({
    extended: false
}));


// token解密验证中间件

// 前提:用户登陆成功后返回token值
// 现在:需要用户接下请求中请求头部携带token值
// 后台给每一个接口(除登陆 注册外)做token验证


// 结果:正确token解密成功,遇到有问题token,解密不成功,中间件内部发出报错

// 中间件第一层:公共处理
app.use(expressJWT({
    secret: 'token130', // 解密字符串，要和加密的secret一样
    algorithms: ['HS256']
}).unless({
    // 除了登录和注册的接口之外，其他接口都需要认证
    path: ['/api/login', '/api/reguser']
}));




// 1.文章分类
let category = require('./routers/category')
app.use('/my/article', category)

// 2.注册
let login = require('./routers/login')
app.use('/api', login)

// .个人中心
let user = require('./routers/user')
app.use('/my', user)


// 中间件第二层:错误处理
app.use(function (err, req, res, next) {
    console.log(err);
    if (err.code === 'invalid_token') {
        res.send({
            "status": 1,
            "message": "身份认证失败",
        })
    }
})